package com.markus.code.exam.meituan;

import javax.swing.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Scanner;

/**
 * Author:markusZhang
 * Date:Create in 2020/9/13 10:29
 * todo:
 */
public class Main2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int k = scanner.nextInt();
            int d = scanner.nextInt();
            int sum = 0;
            Main2 demo = new Main2();
            for (int i = d; i <= k; i++) {
                demo.memo = new HashMap<>();
                demo.path = new ArrayList<>();
                sum += demo.process(n - i, k, 0);
            }
            if (d == k && k == n) {
                System.out.println(sum % 998244353);
            } else {
                System.out.println((sum % 998244353 * 2) % 998244353);
            }
        }
    }

    private HashMap<Integer, Integer> memo;
    private List<Integer> path;

    private int process(int n, int k, int sum) {
        if (sum > n) {
            return 0;
        }
        if (sum == n) {
            return 1;
        }
        if (memo.containsKey(sum)) {
            return memo.get(sum);
        }
        int res = 0;
        for (int i = 1; i <= k; i++) {
            path.add(i);
            res += process(n, k, sum + i);
        }
        memo.put(sum, res);
        return res;
    }
}
